Microsoft Access: Транзитивные связи между таблицами. Запросы.

 

Цель: знакомство с понятием нормализации базы данных. Связи между таблицами.

Программное обеспечение: Microsoft Access 2007 либо новее

В ходе разработки базы данных Вы связали между собой таблицы. Вы можете просмотреть связи между таблицами, выбрав команду «Схема данных»:

 

 

Просмотрите свою сему данных. Она может отличаться взаимным расположением таблиц, однако связи между таблиуами должны быть теми же.

Если схема данных пуста, добавьте нужные таблицы с помощью контекстного меню (вызывается правой кнопкой мыши):

 

 

 

 

В этой работе мы продолжим устанавливать связи, причем некоторые из них будут своего рода «каскадными» (строго говоря, транзитивными).

Задание 1. Создание таблицы «Расписание_звонков».

1. Создайте с помощью конструктора таблицу «Расписание_звонков»

 

 

2. Поле Код в нашем случае – не Счетчик, а просто Числовой. Дело в том, что поле типа Счетчик нельзя изменять самому. Если допустить при наборе данных ошибку, затем исправить, нужный номер в поле типа Счетчик можно потерять навсегда. Это не страшно, если поле типа «Счетчик» не несет особого смысла кроме связи таблиц. Однако в нашем случае номера пар по порядку должны строго начинаться с 1 и далее строго идти по порядку.

3. Укажите формат для полей «Время_начала» и «Время_окончания»

4. Заполните таблицу по образцу:

 

 

и так далее (до вечера).

5. Закройте все объекты Access.

6. Откройте таблицу Расписание в режиме конструктора.

7. Добавьте в таблицу поле «Номер_пары», выберите тип «Мастер подстановки»,

следуйте шагам:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8. Выделите поле, щелкнув по заголовку строки (на рисунке выделено зеленым крестиком)

9. Перетащите поле вверх, расположив после поля «Дата»

 

 

 

 

10. Теперь сохраните таблицу, перейдите в режим редактирования таблицы и заполните содержание нового поля:

 

 

11. Сохраните таблицу.

12. В таблице теперь есть дублирующаяся информация. Поле «Номер_пары» однозначно определяет как время начала, так и время окончания занятия. Теперь можно и нужно удалить поля «Время_начала» и «Время_окончания» из таблицы «Расписание»:

 

 

Не перепутайте! В таблице «Расписание_звонков» ничего удалять не надо!

Задание 2. Создание таблицы «Должности»

1. Закройте все открытые объекты Access.

Создайте таблицу «Должности» в режиме конструктора:

 

 

3. Перейдите в режим таблицы и занесите в таблицу следующие данные:

 

 

(если необходимо, можно добавить и другие записи).

4. Закройте все открытые объекты Access.

5. Откройте таблицу «Преподаватели» в режиме конструктора.

6. Добавьте поле «Должность», выбрав тип «Мастер подстановки»:

 

 

7. Создайте подстановку так, чтобы значения поля выбирались из следующего спсика:

 

 

8. Заполните значения поля «Должность» в таблице «Преподаватели»:

 

 

9. Закройте все открытые объекты Access.

10. Откройте таблицу «Расписание» в режиме конструктора. Поле «Должность» теперь лишнее. Во-первых, такое же поле есть в таблице «Преподаватели». Во-вторых, должность является характеристикой именно преподавателя, а не расписания. Поэтому из таблицы «Расписание» поле «Должность» нужно удалить:

 

 

11. Откройте схему данных. Добавьте оставшиеся таблицы. Расположите элементы так, чтобы линии не пересекались:

 

 

12. В отчет по работе поместите:

a. скриншот схемы данных;

b. скриншот таблицы «Расписание»

Задание 3. Создание запроса.

После создания множества таблиц и связей некоторая информация «исчезла» из главной таблицы «Расписание». На самом деле ниформация есть, но хранится в дополнительных таблицах. Для получения подробной информации из таблиц можно использовать механизм запросов.

1. Создайте запрос в режиме конструктора

Office 2010 - .

 

 

2. Добавьте в запрос все таблицы, кроме таблицы «Расписание_старое»:

 

 

3. Добавьте в запрос поле «Дата» из таблицы «Расписание». Для этого можно либо дважды щелкнуть по нему

 

 

либо перетащить его на область внизу:

 

 

4. Добавьте аналогично поля:

a. из таблицы «Расписание_звонков»: Время_начала, Время_окончания;

b. из таблицы «Дисциплины»: Наименование_дисциплины

c. из таблицы «Виды_занятий»: Наименование_краткое

d. из таблицы «Преподаватели»: Фамилия, Имя, Отчество

e. из таблицы «Должности»: Наименование_краткое Результат:

 

 

5. Выполните запрос, перейдя в режим таблицы. Просмотрите содержание получившейся таблицы. Сохраните запрос под именем «Расписание_полное».

6. Следует понимать, что запрос на выборку – это особая форма отображения информации из базы данных, скомпилированная из нескольких таблиц. Запросы на выборку не предназначены для редактирования информации (хотя подлый Access это разрешает).

7. В отчет по работе поместите скриншоты:

a. скриншот запроса в режиме конструктора

b. скриншот запроса в режиме таблицы

8. Запросы позволяют не только отображать информацию, но и добавлять, изменять, удалять, а также изменять структуру таблиц (это уже не запросы на выборку, а запросы на удаление и т.д.). С этими возможностями будем работать на примере другой базы данных и позже.

9. Запросы на выборку отображают информацию в не самом приятном для восприятия человеком виде. Для этого есть отчеты, с которыми будем работать на следующем занятии.

В качестве ответа на задание прикрепите файл-отчет и саму базу данных.